import Vue from 'vue'
import App from './App.vue'
// 引入axios库
import axios from 'axios'

// 加载路由
import router from './router'

// 导入vant
import Vant, { Toast } from 'vant'
// 导入vant配套的css
import 'vant/lib/index.css'
// 将axios绑定在Vue的原型上面
Vue.prototype.$axios = axios
// 设置基准路径
// 给引入的 axios 设置默认的基准路径
// axios.defaults.baseURL = 'http://127.0.0.1:3000'
// 如果是已经发布到线上, 就应该使用线上的服务器
// 线上线下服务器不一样, 就应该有不一样的配置
// axios.defaults.baseURL = 'http://157.122.54.189:9083'
console.log(process.env.NODE_ENV)
if (process.env.NODE_ENV === 'development') {
  axios.defaults.baseURL = 'http://127.0.0.1:3000'
} else {
  axios.defaults.baseURL = 'http://157.122.54.189:9083'
}
// 添加前置守卫
router.beforeEach((to, from, next) => {
  // 是否有token
  const hasToken = localStorage.getItem('token')
  // 是否是个人中心页
  // if (to.path === '/mycenter') {
  // if (!hasToken) {
  // 没有token则跳转到登录页
  // router.push({ name: 'login' })
  // }
  // console.log(to)
  if (to.meta.isToken) {
    if (!hasToken) {
      // 没有token则跳转到登录页
      router.push({ name: 'login' })
    }
  }
  // 如果不是去个人中心页的话正常执行
  next()
})
// 注册vant
Vue.use(Vant)

// 拦截请求，全局设置token
axios.interceptors.request.use(config => {
  if (localStorage.getItem('token') && !config.headers.Authorization) {
    // 全局设置请求头里面的token值
    config.headers.Authorization = 'Bearer ' + localStorage.getItem('token')
  }
  return config
})
// axios响应拦截器 这个是发送所有的ajax请求服务器响应的时候发生的，都会经过这个拦截器
axios.interceptors.response.use(res => {
  const { message, statusCode } = res.data
  const errRegExp = /^4\d{2}$/
  // 错误提醒
  if (message && errRegExp.test(statusCode)) {
    Toast.fail(message)
  }
  // 用户信息失效
  if (message === '用户信息验证失败') {
    // 跳转到登录页
    setTimeout(() => {
      router.push({ name: 'login' })
    }, 2000)
  }
  return res
})

Vue.config.productionTip = false

new Vue({
  router,
  render: function (h) {
    return h(App)
  }
}).$mount('#app')
